home *** CD-ROM | disk | FTP | other *** search
-
-
-
- SIGVEC C Library Procedures SIGVEC
-
-
-
- NNAAMMEE
- sigvec - software signal facilities
-
- SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ssiiggnnaall..hh>>
-
- ssttrruucctt ssiiggvveecc {{
- iinntt ((**ssvv__hhaannddlleerr))(());;
- iinntt ssvv__mmaasskk;;
- iinntt ssvv__ffllaaggss;;
- }};;
-
- ssiiggvveecc((ssiigg,, vveecc,, oovveecc))
- iinntt ssiigg;;
- ssttrruucctt ssiiggvveecc **vveecc,, **oovveecc;;
-
- DDEESSCCRRIIPPTTIIOONN
- The system defines a set of signals that may be delivered to
- a process. Signal delivery resembles the occurence of a
- hardware interrupt: the signal is blocked from further
- occurrence, the current process context is saved, and a new
- one is built. A process may specify a _h_a_n_d_l_e_r to which a
- signal is delivered, or specify that a signal is to be
- _b_l_o_c_k_e_d or _i_g_n_o_r_e_d. A process may also specify that a
- default action is to be taken by the system when a signal
- occurs. Normally, signal handlers execute on the current
- stack of the process. This may be changed, on a per-handler
- basis, so that signals are taken on a special _s_i_g_n_a_l _s_t_a_c_k.
-
- All signals have the same _p_r_i_o_r_i_t_y. Signal routines execute
- with the signal that caused their invocation _b_l_o_c_k_e_d, but
- other signals may yet occur. A global _s_i_g_n_a_l _m_a_s_k defines
- the set of signals currently blocked from delivery to a pro-
- cess. The signal mask for a process is initialized from
- that of its parent (normally 0). It may be changed with a
- _s_i_g_b_l_o_c_k(2) or _s_i_g_s_e_t_m_a_s_k(2) call, or when a signal is
- delivered to the process.
-
- When a signal condition arises for a process, the signal is
- added to a set of signals pending for the process. If the
- signal is not currently _b_l_o_c_k_e_d by the process then it is
- delivered to the process. When a signal is delivered, the
- current state of the process is saved, a new signal mask is
- calculated (as described below), and the signal handler is
- invoked. The call to the handler is arranged so that if the
- signal handling routine returns normally the process will
- resume execution in the context from before the signal's
- delivery. If the process wishes to resume in a different
- context, then it must arrange to restore the previous con-
- text itself.
-
- When a signal is delivered to a process a new signal mask is
-
-
-
- Sprite v1.0 January 8, 1986 1
-
-
-
-
-
-
- SIGVEC C Library Procedures SIGVEC
-
-
-
- installed for the duration of the process' signal handler
- (or until a _s_i_g_b_l_o_c_k or _s_i_g_s_e_t_m_a_s_k call is made). This mask
- is formed by taking the current signal mask, adding the sig-
- nal to be delivered, and _o_r'ing in the signal mask associ-
- ated with the handler to be invoked.
-
- _S_i_g_v_e_c assigns a handler for a specific signal. If _v_e_c is
- non-zero, it specifies a handler routine and mask to be used
- when delivering the specified signal. Further, if the
- SV_ONSTACK bit is set in _s_v__f_l_a_g_s, the system will deliver
- the signal to the process on a _s_i_g_n_a_l _s_t_a_c_k, specified with
- _s_i_g_s_t_a_c_k(2). If _o_v_e_c is non-zero, the previous handling
- information for the signal is returned to the user.
-
- The following is a list of all signals with names as in the
- include file <_s_i_g_n_a_l._h>:
-
- SIGHUP 1 hangup
- SIGINT 2 interrupt
- SIGDEBUG 3* force process into debuggable state
- SIGILL 4* illegal instruction
- SIGTRAP 5* trace trap
- SIGIOT 6* IOT instruction
- SIGEMT 7* EMT instruction
- SIGFPE 8* floating point exception
- SIGKILL 9 kill (cannot be caught, blocked, or ignored)
- SIGMIG 10 migrate process (cannot be caught, blocked, or ignored)
- SIGSEGV 11* segmentation violation
- SIGSYS 12* bad argument to system call
- SIGPIPE 13 write on a pipe with no one to read it
- SIGALRM 14 alarm clock
- SIGTERM 15 software termination signal
- SIGURG 16@ urgent condition present on socket
- SIGSTOP 17'|+'stop (cannot be caught, blocked, or ignored)
- SIGTSTP 18'|+'stop signal generated from keyboard
- SIGCONT 19@ continue after stop (cannot be blocked)
- SIGCHLD 20@ child status has changed
- SIGTTIN 21'|+'background read attempted from control terminal
- SIGTTOU 22'|+'background write attempted to control terminal
- SIGIO 23@ i/o is possible on a descriptor (see _f_c_n_t_l(2))
- SIGXCPU 24 cpu time limit exceeded (see _s_e_t_r_l_i_m_i_t(2))
- SIGXFSZ 25 file size limit exceeded (see _s_e_t_r_l_i_m_i_t(2))
- SIGVTALRM 26 virtual time alarm (see _s_e_t_i_t_i_m_e_r(2))
- SIGPROF 27 profiling timer alarm (see _s_e_t_i_t_i_m_e_r(2))
- SIGWINCH 28@ window size change
- SIGMIGHOME 29 migrate back to home node (cannot be caught, blocked, or ignored)
- SIGUSR1 30 user defined signal 1
- SIGUSR2 31 user defined signal 2
-
- The starred signals in the list above cause the process to
- enter DEBUG state if not caught or ignored.
-
-
-
-
- Sprite v1.0 January 8, 1986 2
-
-
-
-
-
-
- SIGVEC C Library Procedures SIGVEC
-
-
-
- Once a signal handler is installed, it remains installed
- until another _s_i_g_v_e_c call is made, or an _e_x_e_c_v_e(2) is per-
- formed. The default action for a signal may be reinstated
- by setting _s_v__h_a_n_d_l_e_r to SIG_DFL; this default is termina-
- tion (with a core image for starred signals) except for sig-
- nals marked with @ or '|+'. Signals marked with @ are dis-
- carded if the action is SIG_DFL; signals marked with '|+'
- cause the process to stop. If _s_v__h_a_n_d_l_e_r is SIG_IGN the
- signal is subsequently ignored, and pending instances of the
- signal are discarded.
-
- If a caught signal occurs during certain system calls, the
- call is normally restarted. The call can be forced to ter-
- minate prematurely with an EINTR error return by setting the
- SV_INTERRUPT bit in _s_v__f_l_a_g_s. The affected system calls are
- _r_e_a_d(2) or _w_r_i_t_e(2) on a slow device (such as a terminal;
- but not a file) and during a _w_a_i_t(2).
-
- After a _f_o_r_k(2) or _v_f_o_r_k(2) the child inherits all signals,
- the signal mask, the signal stack, and the restart/interrupt
- flags.
-
- _E_x_e_c_v_e(2) resets all caught signals to default action and
- resets all signals to be caught on the user stack. Ignored
- signals remain ignored; the signal mask remains the same;
- signals that interrupt system calls continue to do so.
-
- NNOOTTEESS
- The mask specified in _v_e_c is not allowed to block SIGKILL,
- SIGSTOP, or SIGCONT. This is done silently by the system.
-
- The SV_INTERRUPT flag is not available in 4.2BSD, hence it
- should not be used if backward compatibility is needed.
-
- RREETTUURRNN VVAALLUUEE
- A 0 value indicated that the call succeeded. A -1 return
- value indicates an error occurred and _e_r_r_n_o is set to indi-
- cated the reason.
-
- EERRRROORRSS
- _S_i_g_v_e_c will fail and no new signal handler will be installed
- if one of the following occurs:
-
- [EFAULT] Either _v_e_c or _o_v_e_c points to memory that is
- not a valid part of the process address
- space.
-
- [EINVAL] _S_i_g is not a valid signal number.
-
- [EINVAL] An attempt is made to ignore or supply a
- handler for SIGKILL or SIGSTOP.
-
-
-
-
- Sprite v1.0 January 8, 1986 3
-
-
-
-
-
-
- SIGVEC C Library Procedures SIGVEC
-
-
-
- [EINVAL] An attempt is made to ignore SIGCONT (by
- default SIGCONT is ignored).
-
- SSEEEE AALLSSOO
- kill(1), ptrace(2), kill(2), sigblock(2), sigsetmask(2),
- sigpause(2), sigstack(2), sigvec(2), setjmp(3), siginter-
- rupt(3), tty(4)
-
- BBUUGGSS
- This manual page is still confusing.
-
- NNOOTTEESS
- The handler routine can be declared:
-
- vvooiidd hhaannddlleerr((ssiigg,, ccooddee,, ssccpp,, aaddddrr))
- iinntt ssiigg,,ccooddee;;
- ssttrruucctt ssiiggccoonntteexxtt **ssccpp;;
- cchhaarr **aaddddrr;;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sprite v1.0 January 8, 1986 4
-
-
-
-